# {{ ansible_managed }}
# =============================================================================
# 备份系统主配置文件
# Backup System Main Configuration File
# 
# 此文件由Ansible自动生成，包含备份系统的所有配置参数
# 请勿手动修改此文件，所有配置应通过Ansible变量进行管理
# 
# 配置内容包括：
# - 基础配置：备份开关、目录路径、保留策略等
# - 压缩设置：压缩算法、级别、线程数等
# - 加密设置：加密方法、密钥配置等
# - 调度配置：每日、每周、每月备份时间
# - 远程备份：rsync、S3、FTP等远程存储配置
# - 通知配置：邮件、Webhook等告警通知
# - 验证配置：备份完整性验证设置
# - 恢复配置：数据恢复相关参数
# - 监控配置：备份状态监控设置
# - 清理配置：过期备份清理策略
# - 性能配置：并行任务、资源限制等
# - 安全配置：文件权限、审计日志等
# 
# 版本信息：v2.0
# 最后更新：{{ ansible_date_time.iso8601 }}
# 管理员：{{ ansible_user | default('system') }}
# =============================================================================

# =============================================================================
# 基础配置 - Basic Configuration
# 备份系统的基本设置和核心参数
# =============================================================================

# 备份系统总开关 - 控制整个备份系统是否启用
BACKUP_ENABLED={{ backup_enabled | lower }}

# 备份根目录 - 所有备份文件的存储根路径
BACKUP_BASE_DIR={{ backup_base_dir }}

# 临时目录 - 备份过程中临时文件的存储路径
BACKUP_TEMP_DIR={{ backup_temp_dir }}

# 日志目录 - 备份系统日志文件的存储路径
BACKUP_LOG_DIR={{ backup_log_dir }}

# 默认保留天数 - 备份文件的默认保留时间（天）
BACKUP_RETENTION_DAYS={{ backup_retention_days }}

# =============================================================================
# 压缩设置 - Compression Settings
# 备份文件压缩相关配置
# =============================================================================

# 压缩算法 - 支持gzip、bzip2、xz等压缩格式
BACKUP_COMPRESSION={{ backup_compression }}

# 压缩级别 - 压缩比率设置（1-9，9为最高压缩率）
BACKUP_COMPRESSION_LEVEL={{ backup_compression_config.level }}

# 压缩线程数 - 并行压缩使用的线程数量
BACKUP_COMPRESSION_THREADS={{ backup_compression_config.threads }}

# =============================================================================
# 加密设置 - Encryption Settings
# 备份文件加密保护配置
# =============================================================================

# 加密开关 - 是否对备份文件进行加密
BACKUP_ENCRYPTION={{ backup_encryption | lower }}

# 加密方法 - 支持openssl和gpg两种加密方式
BACKUP_ENCRYPTION_METHOD={{ backup_encryption_config.method }}

{% if backup_encryption_config.method == 'openssl' %}
# OpenSSL加密配置
# 加密密钥文件路径
BACKUP_ENCRYPTION_KEY_FILE={{ backup_encryption_config.openssl.key_file }}
# 加密算法（如AES-256-CBC）
BACKUP_ENCRYPTION_CIPHER={{ backup_encryption_config.openssl.cipher }}
{% elif backup_encryption_config.method == 'gpg' %}
# GPG加密配置
# GPG接收者（用于加密的公钥标识）
BACKUP_GPG_RECIPIENT={{ backup_encryption_config.gpg.recipient }}
# GPG密钥环路径
BACKUP_GPG_KEYRING={{ backup_encryption_config.gpg.keyring }}
{% endif %}

# =============================================================================
# 调度配置 - Schedule Configuration
# 备份任务的时间调度设置
# =============================================================================

# 每日备份配置 - Daily Backup Settings
# 每日备份开关
DAILY_BACKUP_ENABLED={{ backup_schedule.daily.enabled | lower }}
# 每日备份执行小时（0-23）
DAILY_BACKUP_HOUR={{ backup_schedule.daily.hour }}
# 每日备份执行分钟（0-59）
DAILY_BACKUP_MINUTE={{ backup_schedule.daily.minute }}

# 每周备份配置 - Weekly Backup Settings
# 每周备份开关
WEEKLY_BACKUP_ENABLED={{ backup_schedule.weekly.enabled | lower }}
# 每周备份执行小时（0-23）
WEEKLY_BACKUP_HOUR={{ backup_schedule.weekly.hour }}
# 每周备份执行分钟（0-59）
WEEKLY_BACKUP_MINUTE={{ backup_schedule.weekly.minute }}
# 每周备份执行星期（0=周日，1=周一...6=周六）
WEEKLY_BACKUP_WEEKDAY={{ backup_schedule.weekly.weekday }}

# 每月备份配置 - Monthly Backup Settings
# 每月备份开关 - 控制是否启用每月定期备份
MONTHLY_BACKUP_ENABLED={{ backup_schedule.monthly.enabled | lower }}
# 每月备份执行小时（0-23） - 每月备份任务的执行小时
MONTHLY_BACKUP_HOUR={{ backup_schedule.monthly.hour }}
# 每月备份执行分钟（0-59） - 每月备份任务的执行分钟
MONTHLY_BACKUP_MINUTE={{ backup_schedule.monthly.minute }}
# 每月备份执行日期（1-31） - 每月备份任务的执行日期
MONTHLY_BACKUP_DAY={{ backup_schedule.monthly.day }}

# =============================================================================
# 远程备份配置 - Remote Backup Configuration
# 远程存储和同步相关设置，支持将备份文件传输到远程位置
# =============================================================================

# 远程备份开关 - 是否启用远程备份功能，将本地备份同步到远程存储
REMOTE_BACKUP_ENABLED={{ backup_remote_enabled | lower }}

# 远程备份类型 - 支持rsync、s3、ftp等多种远程存储方式
REMOTE_BACKUP_TYPE={{ backup_remote_type }}

{% if backup_remote_type == 'rsync' %}
# Rsync远程同步配置 - Rsync Remote Sync Configuration
# 远程主机地址
RSYNC_HOST={{ backup_remote_config.rsync.host }}
# 远程用户名
RSYNC_USER={{ backup_remote_config.rsync.user }}
# 远程路径
RSYNC_PATH={{ backup_remote_config.rsync.path }}
# SSH私钥文件路径
RSYNC_SSH_KEY={{ backup_remote_config.rsync.ssh_key }}
# Rsync同步选项
RSYNC_OPTIONS={{ backup_remote_config.rsync.options }}
{% elif backup_remote_type == 's3' %}
# Amazon S3存储配置 - Amazon S3 Storage Configuration
# S3存储桶名称
S3_BUCKET={{ backup_remote_config.s3.bucket }}
# S3对象前缀（目录路径）
S3_PREFIX={{ backup_remote_config.s3.prefix }}
# S3区域
S3_REGION={{ backup_remote_config.s3.region }}
# S3存储类别（STANDARD、IA、GLACIER等）
S3_STORAGE_CLASS={{ backup_remote_config.s3.storage_class }}
# S3访问密钥ID
S3_ACCESS_KEY={{ backup_remote_config.s3.access_key }}
# S3秘密访问密钥
S3_SECRET_KEY={{ backup_remote_config.s3.secret_key }}
{% elif backup_remote_type == 'ftp' %}
# FTP服务器配置 - FTP Server Configuration
# FTP服务器地址
FTP_HOST={{ backup_remote_config.ftp.host }}
# FTP服务器端口
FTP_PORT={{ backup_remote_config.ftp.port }}
# FTP用户名
FTP_USERNAME={{ backup_remote_config.ftp.username }}
# FTP密码
FTP_PASSWORD={{ backup_remote_config.ftp.password }}
# FTP远程路径
FTP_PATH={{ backup_remote_config.ftp.path }}
# FTP被动模式开关
FTP_PASSIVE={{ backup_remote_config.ftp.passive | lower }}
{% endif %}

# =============================================================================
# 通知配置 - Notification Configuration
# 备份状态通知和告警设置，包括邮件和Webhook通知方式
# =============================================================================

# 通知功能总开关 - 控制是否启用备份完成后的通知功能
NOTIFICATION_ENABLED={{ backup_notification_enabled | lower }}

{% if backup_notification_config.email.enabled %}
# 邮件通知配置 - Email Notification Settings
# 邮件通知开关 - 是否启用邮件通知功能
EMAIL_ENABLED={{ backup_notification_config.email.enabled | lower }}
# SMTP服务器地址 - 邮件发送服务器的主机地址
EMAIL_SMTP_SERVER={{ backup_notification_config.email.smtp_server }}
# SMTP服务器端口 - 邮件发送服务器的端口号（通常为25、587或465）
EMAIL_SMTP_PORT={{ backup_notification_config.email.smtp_port }}
# 发件人邮箱地址 - 备份通知邮件的发送方邮箱
EMAIL_FROM={{ backup_notification_config.email.from }}
# 收件人邮箱列表（逗号分隔） - 接收备份通知的邮箱地址列表
EMAIL_RECIPIENTS={{ backup_notification_config.email.recipients | join(',') }}
# SMTP认证用户名 - 邮件服务器登录用户名
EMAIL_USERNAME={{ backup_notification_config.email.username }}
# SMTP认证密码 - 邮件服务器登录密码
EMAIL_PASSWORD={{ backup_notification_config.email.password }}
{% endif %}

{% if backup_notification_config.webhook.enabled %}
# Webhook通知配置 - Webhook Notification Settings
# Webhook通知开关 - 是否启用Webhook通知功能
WEBHOOK_ENABLED={{ backup_notification_config.webhook.enabled | lower }}
# Webhook接收URL - 接收备份状态通知的HTTP端点地址
WEBHOOK_URL={{ backup_notification_config.webhook.url }}
# HTTP请求方法（GET、POST等） - 发送Webhook通知使用的HTTP方法
WEBHOOK_METHOD={{ backup_notification_config.webhook.method }}
# HTTP请求头（JSON格式） - 发送Webhook请求时附加的HTTP头信息
WEBHOOK_HEADERS={{ backup_notification_config.webhook.headers | to_json }}
{% endif %}

# =============================================================================
# 验证配置 - Verification Configuration
# 备份完整性验证相关设置，确保备份文件的可靠性和完整性
# =============================================================================

# 验证功能开关 - 是否启用备份验证功能，建议开启以确保备份质量
VERIFICATION_ENABLED={{ backup_verification_enabled | lower }}
# 校验和验证 - 是否计算和验证文件校验和，用于检测文件损坏
VERIFICATION_CHECKSUM={{ backup_verification_config.checksum | lower }}
# 恢复测试 - 是否执行恢复测试验证，通过实际恢复测试验证备份可用性
VERIFICATION_RESTORE_TEST={{ backup_verification_config.restore_test | lower }}
# 验证调度 - 验证任务的执行时间安排（daily/weekly/monthly）
VERIFICATION_SCHEDULE={{ backup_verification_config.schedule }}

# =============================================================================
# 恢复配置 - Recovery Configuration
# 数据恢复和还原相关设置，定义数据恢复过程的各项参数
# =============================================================================

# 恢复暂存目录 - 恢复过程中的临时工作目录，需要足够的磁盘空间
RECOVERY_STAGING_DIR={{ backup_restore_config.staging_dir }}
# 备份原始数据 - 恢复前是否备份原始数据，防止恢复失败时数据丢失
RECOVERY_BACKUP_ORIGINAL={{ backup_restore_config.backup_original | lower }}
# 恢复前验证 - 恢复前是否验证备份文件完整性，确保备份文件可用
RECOVERY_VERIFY_BEFORE={{ backup_restore_config.verify_before_restore | lower }}
# 并行恢复任务数 - 同时执行的恢复任务数量，影响恢复速度和系统负载
RECOVERY_PARALLEL_JOBS={{ backup_restore_config.parallel_jobs }}

# =============================================================================
# 监控配置 - Monitoring Configuration
# 备份状态监控和指标收集设置，用于实时监控备份系统运行状态
# =============================================================================

# 监控功能开关 - 是否启用备份监控功能，建议开启以便及时发现问题
MONITORING_ENABLED={{ backup_monitoring_enabled | lower }}
# 检查间隔 - 监控检查的时间间隔（秒），较短间隔可更快发现问题
MONITORING_CHECK_INTERVAL={{ backup_monitoring_config.check_interval }}
# 告警阈值 - 触发告警的阈值设置（小时），超过此时间未完成备份将告警
MONITORING_ALERT_THRESHOLD={{ backup_monitoring_config.alert_threshold }}
# 指标端点 - 监控指标的暴露端点URL，用于外部监控系统采集数据
MONITORING_METRICS_ENDPOINT={{ backup_monitoring_config.metrics_endpoint }}

# =============================================================================
# 清理配置 - Cleanup Configuration
# 过期备份文件清理策略设置，自动删除超过保留期限的备份文件
# =============================================================================

# 清理功能开关 - 是否启用自动清理过期备份，建议开启以节省存储空间
CLEANUP_ENABLED={{ backup_cleanup_enabled | lower }}
# 保留每日备份数量 - 保留最近N天的每日备份，超过此天数的每日备份将被删除
CLEANUP_KEEP_DAILY={{ backup_cleanup_config.keep_daily }}
# 保留每周备份数量 - 保留最近N周的每周备份，超过此周数的每周备份将被删除
CLEANUP_KEEP_WEEKLY={{ backup_cleanup_config.keep_weekly }}
# 保留每月备份数量 - 保留最近N个月的每月备份，超过此月数的每月备份将被删除
CLEANUP_KEEP_MONTHLY={{ backup_cleanup_config.keep_monthly }}
# 保留每年备份数量 - 保留最近N年的每年备份，超过此年数的每年备份将被删除
CLEANUP_KEEP_YEARLY={{ backup_cleanup_config.keep_yearly }}
# 清理调度 - 清理任务的执行时间安排，使用cron格式定义清理任务的执行时间
CLEANUP_SCHEDULE={{ backup_cleanup_config.schedule }}

# =============================================================================
# 性能配置 - Performance Configuration
# 备份性能优化和资源限制设置，平衡备份速度与系统负载
# =============================================================================

# 并行任务数 - 同时执行的备份任务数量，增加可提高速度但会增加系统负载
PERFORMANCE_PARALLEL_JOBS={{ backup_performance_config.parallel_jobs }}
# IO优先级 - 备份进程的IO调度优先级（0-7，数字越大优先级越低）
PERFORMANCE_IO_NICE={{ backup_performance_config.io_nice }}
# CPU优先级 - 备份进程的CPU调度优先级（-20到19，数字越大优先级越低）
PERFORMANCE_CPU_NICE={{ backup_performance_config.cpu_nice }}
# 带宽限制 - 网络传输带宽限制（如10M、100M），0表示无限制
PERFORMANCE_BANDWIDTH_LIMIT={{ backup_performance_config.bandwidth_limit }}

# =============================================================================
# 安全配置 - Security Configuration
# 备份文件安全和权限管理设置，确保备份数据的安全性和访问控制
# =============================================================================

# 文件权限 - 备份文件的权限设置（八进制格式，如644、600），建议使用600限制访问
SECURITY_FILE_PERMISSIONS={{ backup_security_config.file_permissions }}
# 目录权限 - 备份目录的权限设置（八进制格式，如755、700），建议使用700限制访问
SECURITY_DIRECTORY_PERMISSIONS={{ backup_security_config.directory_permissions }}
# 文件所有者 - 备份文件的所有者用户，通常设置为root或专用备份用户
SECURITY_OWNER={{ backup_security_config.owner }}
# 文件组 - 备份文件的所属组，通常设置为root或专用备份组
SECURITY_GROUP={{ backup_security_config.group }}
# 安全删除 - 是否使用安全删除方式清理临时文件，多次覆写防止数据恢复
SECURITY_SECURE_DELETE={{ backup_security_config.secure_delete | lower }}
# 审计日志 - 是否启用备份操作审计日志，记录所有备份相关操作用于安全审计
SECURITY_AUDIT_LOGGING={{ backup_security_config.audit_logging | lower }}

# =============================================================================
# 备份类型配置 - Backup Types Configuration
# 不同类型备份的具体设置，包括配置文件、数据文件、数据库等各种备份类型
# =============================================================================

{% for backup_type in backup_types_config %}
# {{ backup_type.name | upper }}备份配置 - {{ backup_type.name | upper }} Backup Configuration
# {{ backup_type.name | upper }}备份开关 - 是否启用{{ backup_type.name }}类型的备份功能
{{ backup_type.name | upper }}_ENABLED={{ backup_type.enabled | lower }}
# {{ backup_type.name | upper }}备份调度 - {{ backup_type.name }}备份任务的执行时间安排（cron格式）
{{ backup_type.name | upper }}_SCHEDULE={{ backup_type.schedule }}
# {{ backup_type.name | upper }}备份保留策略 - {{ backup_type.name }}备份文件的保留天数
{{ backup_type.name | upper }}_RETENTION={{ backup_type.retention }}
# {{ backup_type.name | upper }}备份压缩设置 - 是否对{{ backup_type.name }}备份文件进行压缩
{{ backup_type.name | upper }}_COMPRESSION={{ backup_type.compression | lower }}
# {{ backup_type.name | upper }}备份加密设置 - 是否对{{ backup_type.name }}备份文件进行加密保护
{{ backup_type.name | upper }}_ENCRYPTION={{ backup_type.encryption | lower }}
{% endfor %}

# =============================================================================
# 脚本路径配置 - Script Paths Configuration
# 备份系统各功能脚本的路径设置，定义各种备份和管理脚本的存储位置
# =============================================================================

# 主备份脚本路径 - 备份系统的主控制脚本，负责协调整个备份流程
MAIN_SCRIPT={{ backup_scripts.main_script }}
# 配置备份脚本路径 - 配置文件备份专用脚本，处理系统和应用配置文件的备份
CONFIG_SCRIPT={{ backup_scripts.config_script }}
# 数据备份脚本路径 - 应用数据备份专用脚本，处理用户数据和应用文件的备份
DATA_SCRIPT={{ backup_scripts.data_script }}
# 数据库备份脚本路径 - 数据库备份专用脚本，处理各种数据库的导出和备份
DATABASE_SCRIPT={{ backup_scripts.database_script }}
# 恢复脚本路径 - 数据恢复专用脚本，负责从备份文件中恢复数据
RESTORE_SCRIPT={{ backup_scripts.restore_script }}
# 验证脚本路径 - 备份验证专用脚本，检查备份文件的完整性和可用性
VERIFY_SCRIPT={{ backup_scripts.verify_script }}
# 清理脚本路径 - 过期备份清理专用脚本，自动删除超过保留期限的备份文件
CLEANUP_SCRIPT={{ backup_scripts.cleanup_script }}

# =============================================================================
# 配置源设置 - Configuration Sources
# 各种配置文件的备份源路径和排除规则，支持灵活的配置文件备份策略
# =============================================================================

{% for config in backup_configs %}
# {{ config.name | upper }}配置备份 - {{ config.name | upper }} Configuration Backup
# {{ config.name | upper }}配置备份开关 - 是否启用{{ config.name }}配置文件的备份功能
{{ config.name | upper }}_BACKUP_ENABLED={{ config.enabled | lower }}
# {{ config.name | upper }}配置源路径 - {{ config.name }}配置文件的源目录或文件路径
{{ config.name | upper }}_SOURCE={{ config.source }}
# {{ config.name | upper }}配置排除规则 - {{ config.name }}备份时需要排除的文件或目录模式（支持通配符）
{{ config.name | upper }}_EXCLUDE={{ config.exclude | default('') }}
{% endfor %}

# =============================================================================
# 数据源设置 - Data Sources
# 各种应用数据的备份源路径和排除规则，确保重要业务数据的完整备份
# =============================================================================

{% for data in backup_data %}
# {{ data.name | upper }}数据备份 - {{ data.name | upper }} Data Backup
# {{ data.name | upper }}数据备份开关 - 是否启用{{ data.name }}应用数据的备份功能
{{ data.name | upper }}_BACKUP_ENABLED={{ data.enabled | lower }}
# {{ data.name | upper }}数据源路径 - {{ data.name }}应用数据的存储目录或文件路径
{{ data.name | upper }}_SOURCE={{ data.source }}
# {{ data.name | upper }}数据排除规则 - {{ data.name }}数据备份时需要排除的文件或目录模式（如临时文件、缓存等）
{{ data.name | upper }}_EXCLUDE={{ data.exclude | default('') }}
{% endfor %}

# =============================================================================
# 数据库配置 - Database Configuration
# 各种数据库的连接和备份设置，支持多种数据库类型的自动备份
# =============================================================================

{% for db in backup_databases %}
# {{ db.name | upper }}数据库备份 - {{ db.name | upper }} Database Backup
# {{ db.name | upper }}数据库备份开关 - 是否启用{{ db.name }}数据库的备份功能
{{ db.name | upper }}_ENABLED={{ db.enabled | lower }}
# {{ db.name | upper }}数据库类型 - 数据库管理系统类型（mysql、postgresql、mongodb、redis等）
{{ db.name | upper }}_TYPE={{ db.type }}
# {{ db.name | upper }}数据库主机地址 - 数据库服务器的IP地址或主机名
{{ db.name | upper }}_HOST={{ db.host }}
# {{ db.name | upper }}数据库端口号 - 数据库服务监听的网络端口
{{ db.name | upper }}_PORT={{ db.port }}
# {{ db.name | upper }}数据库用户名 - 连接数据库使用的用户账号（需要备份权限）
{{ db.name | upper }}_USERNAME={{ db.username }}
# {{ db.name | upper }}要备份的数据库列表 - 需要备份的数据库名称（逗号分隔，支持通配符）
{{ db.name | upper }}_DATABASES={{ db.databases | join(',') }}
{% endfor %}

# =============================================================================
# 日志源设置 - Log Sources
# 各种系统和应用日志的备份设置，保留重要的运行日志和审计记录
# =============================================================================

{% for log in backup_logs %}
# {{ log.name | upper }}日志备份 - {{ log.name | upper }} Log Backup
# {{ log.name | upper }}日志备份开关 - 是否启用{{ log.name }}日志文件的备份功能
{{ log.name | upper }}_BACKUP_ENABLED={{ log.enabled | lower }}
# {{ log.name | upper }}日志源路径 - {{ log.name }}日志文件的存储目录或文件路径
{{ log.name | upper }}_SOURCE={{ log.source }}
# {{ log.name | upper }}日志保留天数 - {{ log.name }}日志备份文件的保留时间（天数）
{{ log.name | upper }}_RETENTION_DAYS={{ log.retention_days | default(7) }}
{% endfor %}

# =============================================================================
# 配置文件结束标记
# End of Configuration File
# =============================================================================